3. member twin method

비상수 operator[]를 상수 버전으로 호출
class TextBlock{
public:
// ...
const char& operator[](std::size_t position) const {
// ...
return text[position];
} // const method
char& operator[](std::size_t position){
return const_cast<char&>(
static_cast<const TextBlock&>(*this)[position]
);
} // non const method
// ...
}
동일한 non-const method의 내용을 호출하기 위해서 *this를 static_cast로 const TextBlock으로 캐스팅 후,
return value를 const_cast를 이용해서 다시 char&로 변환해서 사용

const를 non-const를 호출해서 구현하는 것은 위험함.
(const method는 내부에서 변환하지 않음을 보장하지만, non-const method는 이를 보장하지 않아 위험)